1. Field of the Invention
This invention relates in general to the field of creating, configuring and deploying computer systems with user-specified features and in particular to an application of virtual machine technology.
2. Description of the Related Art
Few users of modern computers have managed to avoid the frustrations involved in configuring a new computer for use. Of course, one way to minimize set-up problems is to buy a “ready-made” computer with all software already loaded. This solution is often far from optimal, especially for more sophisticated users who may need a hardware and software configuration that is not common and therefore not offered at all, or only at unacceptable cost. Even for the normal user, however, the “computer-in-a-box” solution has the disadvantage of inflexibility—once the “box” is delivered, every new application and upgrade must be installed by the user.
Once a computer is configured, it must then also be managed and administered it on an ongoing basis. The tasks of configuration, management and administration are further complicated by the fact that a typical multi-user environment includes a large number of computers having a variety of operating systems and applications running in them. Furthermore, the demands for specific configurations of operating systems and applications often arise unpredictably, as they are needed. Provisioned computers may, for example, be needed for only a few minutes for some environments (for example, in the classroom, for quality assurance testing, etc.), a few days (for example, running simulations, analyzing data, etc.), or for longer periods (for example, in an IT department).
One solution that has been made possible by the growth of networks, especially the Internet, is “hosting,” in which providers remotely take care of installation, configuration and maintenance not only of the physical machines and the Internet connectivity, but also of the applications running on them. This is advantageous for customers because it provides a comprehensive service that allows the users to outsource their application hosting and management needs.
A major component of the cost to the hosting providers who offer such a service is the need to provision machines and applications for new customers. A typical scenario of what happens when a new customer requests the provisioning and hosting service is that the customer logs onto the service provider's web site and, via a web browser, custom-configures a server by specifying the operating system and applications. These specifications identify the machine configuration that the hosting service provider needs to provision. Depending on the specifications, the provider will either need to provision a new machine, or may satisfy the user's request by creating a replica, that is, an additional instance of an existing machine. In either case, the service provider must find a suitable unused physical machine, install the required components, configure the machine, and install and configure the selected applications. The service provider then powers on the machine, whereupon further configuration of the machine and applications is often required. The system is then finally ready to be used by the customer. If there are other machines that need to be configured, the whole process is repeated.
The process of provisioning new computers for a given task has hitherto been very resource intensive, requiring much human intervention. Although some aspects of the various provisioning tasks can be automated, according to the prior art, the process is difficult to automate completely. This is because, for example, the machines themselves must be physically powered on and storage media such as CD-ROM disks and floppy disks must be physically inserted in the appropriate drives on the computer in order to install the operating system and/or applications. Technologies do exist to automate individual ones of these tasks, but it then becomes increasingly difficult to manage all of the tasks together. Examples or such existing technologies include the “Altiris eXpress” system deployment and software management products of Altiris, Inc., of Lindon, Utah; the “AppNstall” product of StorageSoft, Inc., of Lousiville, Colo.; the “IBM LANClient Control Manager” product of IBM Corp.; and the “BladeFrame” technology of Egenera, Inc.
Moreover, some tasks, like remotely powering on of machines, requires specialized hardware on the machines. Examples of such systems include the PXE (“Preboot Execution Environment”) and “Wake on LAN” systems of Intel Corp. Another disadvantage is that a dedicated physical machine must typically be provided for each user.
There are still other solutions, such as “server blades,” which attempt to share hardware resources, logical partitioning, etc., but even these solutions require specialized systems; note that a server blade is typically a single circuit board populated with components such as processors, memory, and network connections that are usually found on multiple boards. One of many examples of this solution is the “RLX ServerBlade 800i” made by RLX Technologies, Inc., of The Woodlands, Tex. An example of a scalable, logically partitionable server is the “Sun Enterprise 10000 Server” made by Sun Microsystems, Inc., of Palo Alto, Calif. This of course is usually both inefficient and expensive, since few users will need all of the processing power of a network server. To illustrate, consider the following major steps that are normally required for provisioning a new computer using the prior art:
1) Assembling hardware: The first step is to assemble the required hardware. Based on the requirements of the applications that need to run on the machine, the user specifies the amount of memory that needs to be installed, the number of disk drives and size of disk space required, the number of network cards needed, the number of CPUs required, etc. A system administrator then configures the hardware according to these specifications.
2) Installing the operating system (OS): The system administrator installs the OS by inserting an installation CD into a CD-ROM drive, which typically includes a “wizard” that guides the installer by presenting various questions to be answered. This is followed by installing the required service pack levels for the OS.
3) Installing applications: Any applications required by the user are then installed and configured on the newly created machine. This step is repeated for each application that is needed.
If replicas of an existing computer are to be deployed to meet the needs of the user, the system administrator follows the following main steps:
1) The OS and the applications on the computer that is to be replicated are copied using conventional disk imaging software, which creates an exact image of the bits on the computer's disk. This image represents the entire contents of the disk, including the boot record, the boot sectors, the system partition holding the OS and applications and data partitions, if any, holding additional software and or data.
2) The hardware for the new computer is then assembled as described above. Since it is assumed that the replica is to be identical to the original computer, the requirements for memory, the disk, etc., are simply taken from that computer, which acts as the “model computer” from which the replicas are derived.
3) The image created in the step 1 above is then installed on the new computer, which may usually also be done using the disk imaging software. Successful completion of this step results in the new computer's disk being an identical replica of the disk of the model computer.
4) The newly created computer is then an exact replica of the model computer. In order to function correctly in a network setting that includes the original as well, however, it needs to be given its own unique identify. The system administrator therefore gives this machine a new identity by assigning it a new hostname and a new IP address. Machines with Microsoft Windows operating systems also require each newly created machine to have a unique Security Identifier (SID). The administrator assigns SIDs to the respective replica computers by running specific, known tools for that purpose.
Another scenario where provisioning of computers is required is a Quality Assurance (QA), or testing lab: A product is typically tested against a very large set of configurations, that is, combinations of operating systems, service packs, patches and hot fixes, applications, etc. When a new version of the product to be tested is ready, a suite of tests is run on it for each and every such configuration. Usually, this is done by running the tests on small subsets of configurations by installing each configuration subset on a respective, separate computer. When a test completes, the current configuration subset is un-installed from the respective computer and a new subset of configurations is installed. This process is repeated until the product has been tested against all the configurations. This entire process is repeated the next time the tests have to be run.
Testing products exist that automate the task of running tests. The task of switching between computer configurations remains, however, mostly a manual operation. Examples of such products include the “TestDirector 7i” made by Mercury Interactive Corp. of Sunnyvale, Calif.; and the “Rational TestManager” made by the Rational Software Corp. of Cupertino, Calif.
Because of the large number of operating systems, each with a number of service packs, patches and hot fixes, and the large number of applications that a given product usually needs to be tested against, the number of configurations to be tested against can quickly grow into hundreds. Provisioning computers for each test cycle for all these configurations obviously requires significant time and human resources.
There are known variations on the above scheme that attempt to improve the turn-around time between configuration tests. One option, for example, is to maintain each configuration in a removable disk and then to shutdown a machine, swap the disks and boot the new configuration. Even this procedure is extremely resource- and personnel-intensive. Note that the disks themselves must be stored and managed separately. Another option is to partition the disks in the computers and to have each partition host a configuration. This reduces the need for managing disks separately, but does not reduce the time required to switch between configurations, because the computer running one configuration must be shut down and rebooted with another configuration. Not only is this method also resource-intensive, but it also requires a higher degree of skill in those involved.
From the perspective of hosting providers, or of those who simply configure and deliver computer systems to user, what is needed is therefore a system and method that allows them to easily and flexibly configure the systems to be hosted or provided, with a potentially wide range of available options. It should not be necessary to have a separate dedicated physical system for each user, and configuring systems should ideally be fully automated, or at least more so than is now possible. From the perspective of users, what is needed is greater flexibility in choosing computer configurations, with easy access to a wide range of options and with quick response. This invention provides such a system and related method of operation.